``` #include <dirent.h> #include <stdio.h> int main(void) { DIR *d = opendir("/tmp"); /* 底层openat rax=257 */ if (d == NULL) { perror("opendir"); return 1; } struct dirent *e; while ((e = readdir(d)) != NULL) { /* 底层getdents64 rax=217批量取项 */ printf("%s (type=%d)\n", e->d_name, e->d_type); } closedir(d); /* 底层close rax=3 */ return 0; } ``` 链路:`opendir()` → glibc 置 `rax=257`(openat)打开目录取得描述符并包成 `DIR` 流。`readdir()` 内部在缓